package main

import "fmt"

func intSeq() func() int {
	i := 5
	return func() int {
		i++
		return i
	}
}

func main() {

	//这里注意 intSeq()返回的是一个函数 而不是某一个具体的值
	// i 属于这个闭包函数的 局部变量被捕获
	nextInt := intSeq()

	fmt.Println(nextInt()) //6 第1次调用这个得到的函数+1
	fmt.Println(nextInt()) //7 第2次调用这个得到的函数 又+1
	fmt.Println(nextInt()) //8 第3次调用这个得到的函数 又+1

	newInts := intSeq()    //这里又相当于返回另一个函数 重新计数
	fmt.Println(newInts()) //6
}
